﻿#ifndef POSTCOMMANDPY_H
#define POSTCOMMANDPY_H

#include <QObject>
#include "API_PostCommand.h"
#include "BaseModule/GlobalEnums.h"

#define PostCommandManagerPyInstance PostCommand::PostCommandPy::getInstance()

namespace PostCommand
{
    // 封装C++功能，供C接口调用
    class API_POSTCOMMAND PostCommandPy : public QObject
    {
        Q_OBJECT
    public:
        /// @brief 获取单例
        static PostCommandPy* getInstance();

    signals:
        void signal_saveGraph(QString filePath, bool* isSuccess);
        void signal_set2DPlotType(int type);

        void signal_sendSelectedInfo(int& variableIndex, QList<QPair<int, QList<int>>>& chosenData, QList<int>& valueIndexs, bool* isSuccess, QList<int> selectParserIndex, bool isOpenNewWindow);
        void signal_setHeatMapSelectedCurveNameIndexs(int windowId, QList<int> selectedCurveNameIndexs);
        void signal_setHeatMapVariableAxisChanged(int windowId, int variableAxisIndex);
        void signal_setHeatMapSecondVariableAxisChanged(int windowId, int variableAxisIndex);
        void signal_setHeatMapCurveNameCheckStateChanged(int windowId, int curveNameIndex, bool checkState);
        void signal_setHeatMapDataOprationChanged(int windowId, bool isLoged, bool isNormalized);
        void signal_setHeatMapResultValueDataChanged(int windowId, int index);
        void signal_saveHeatMapMainSettingData(int windowId, bool scalarBarIsAutoRange, double scalarBarMin, double scalarBarMax,
                                               QString scalarBarColor, int scalarBarFontSize, bool XAxisAutoTitle, QString XAxisTitle, QString XTitleFontColor, int XTitleFontSize,
                                               QString XAxisColor, double XAisThickness, int XValuePrecision, QString XAxisDigitColor, int XAxisDigitSize,
                                               bool XAxisIsAutoRange, double XAxisMax, double XAxisMin, bool XIsAutoStepSize, double XCustomStepSize,
                                               bool YAxisAutoTitle, QString YAxisTitle, QString YTitleFontColor, int YTitleFontSize,
                                               QString YAxisColor, double YAisThickness, int YValuePrecision, QString YAxisDigitColor, int YAxisDigitSize,
                                               bool YAxisIsAutoRange, double YAxisMax, double YAxisMin, bool YIsAutoStepSize, double YCustomStepSize,
                                               bool gridIsMainGridLineDisplay, QString gridMainGridLineColor, int gridMainGridLineStyle, double gridMainGridLineThickness,
                                               bool gridIsSecondaryGridLineDisplay, QString gridSecondaryGridLineColor, int gridSecondaryGridLineStyle, double gridSecondaryGridLineThickness,
                                               QString windowTitleName, QString windowTitleFontColor, int windowTitleFontSize);
        void signal_setHeatMapFixedValueChanged(int windowId, QList<int> indexList);
        void signal_setHeatMapComplexPartsChanged(int windowId, bool isAmplitudeChecked, bool isPhaseChecked, bool isRealPartChecked, bool isImaginaryPartChecked);
        void signal_setRemoveSelectedGraph(int windowId);

        // 二维折线图
        void signal_lineChartSidebarVariableAxisChanged(int mainWindowId, QList<int> allSelectedItem, int reuslt, QString sVariableAxistCurrentText);
        void signal_lineChartSidebarCurveNameClicked(int mainWindowId, QList<int> allSelectedItemIndexList);
        void signal_lineChartSidebarCurveNameCheckStateChanged(int mainWindowId, int index, int checkStatus);
        void signal_lineChartSidebarFixedValueChanged(int mainWindowId, QList<int> sllIndexList);
        void signal_lineChartSidebarDataOperationChanged(int mainWindowId, bool isNormChecked, bool isDBChecked, bool isMathOperationChecked);
        void signal_lineChartSidebarValueDataChanged(int mainWindowId, int currentIndex);
        void signal_saveLineChartMainSettingData(int mainWindowId, int index, bool axiDisIsAutoName, QString axiDisTitleText, QString axiDisTitleFontColor, int axiDisTitleFontSize, QString axiDisAxisColor, int axiDisAxisThickness, double axiDisValuePrecision, QString axiDisAxisDigitColor, int axiDisAxisDigitSize,
                                                 bool axiRangIsAutoRange, double axiRangMaxValue, double axiRangMinValue, bool axiRangIsAutoStepSize, double axiRangCustomStepSize,
                                                 bool yAxiDisIsAutoName, QString yAxiDisTitleText, QString yAxiDisTitleFontColor, int yAxiDisTitleFontSize, QString yAxiDisAxisColor, int yAxiDisAxisThickness, double yAxiDisValuePrecision, QString yAxiDisAxisDigitColor, int yAxiDisAxisDigitSize,
                                                 bool yAxiRangIsAutoRange, double yAxiRangMaxValue, double yAxiRangMinValue, bool yAxiRangIsAutoStepSize, double yAxiRangCustomStepSize,
                                                 bool gridIsMainGridLineDisplay, QString gridMainGridLineColor, int gridMainGridLineStyle, double gridMainGridLineThickness, bool gridIsSecondaryGridLineDisplay, QString gridSecondaryGridLineColor, int gridSecondaryGridLineStyle, double gridSecondaryGridLineThickness,
                                                 QString titleName, QString titleFontColor, int titleFontSize,
                                                 QString legendFontColor, int legendFontSize, QString legendLineColor, int legendLineThickness,
                                                 QString resultDataName, QString dataLineColor, int dataLineStyle, double dataLineThickness, bool isDisplaySymbol, int symbolStyle, double symbolSize, QString symbolColor);

        // 极坐标图
        void signal_polarCoordinateGraphSidebarVariableAxisChanged(int mainWindowId, QList<int> allSelectedItem, int reuslt, QString sVariableAxistCurrentText);
        void signal_polarCoordinateGraphSidebarCurveNameClicked(int mainWindowId, QList<int> allSelectedItemIndexList);
        void signal_polarCoordinateGraphSidebarCurveNameCheckStateChanged(int mainWindowId, int index, int checkStatus);
        void signal_polarCoordinateGraphSidebarDataOperationChanged(int mainWindowId, bool isNormChecked, bool isDBChecked);
        void signal_polarCoordinateGraphSidebarValueDataChanged(int mainWindowId, int currentIndex);
        void signal_savePolarCoordinateGraphMainSettingData(int mainWindowId, int index, QString angDisAxisColor, int angDisAxisThickness, double angDisValuePrecision, QString angDisAxisDigitColor, int angDisAxisDigitSize,
                                                            bool angRangIsAutoStepSize, int angRangCustomStepSize,
                                                            QString radDisAxisColorStr, int radDisAxisThickness, double radDisValuePrecision, QString radDisAxisDigitColorStr, int radDisAxisDigitSize,
                                                            bool radRangIsAutoRange, double radRangMaxValue, double radRangMinValue, bool radRangIsAutoStepSize, double radRangCustomStepSize,
                                                            bool gridIsMainGridLineDisplay, QString gridMainGridLineColor, int gridMainGridLineStyle, double gridMainGridLineThickness,
                                                            QString titleName, QString titleFontColor, int titleFontSize,
                                                            QString legendFontColor, int legendFontSize, QString legendLineColor, int legendLineThickness,
                                                            QString dataProResultDataName, QString dataProDataLineColor, int dataProDataLineStyle, double dataProDataLineThickness, bool dataProIsDisplaySymbol, int dataProSymbolStyle, double dataProSymbolSize, QString dataProSymbolColor);
        void signal_polarCoordinateGraphSidebarDeleteAllGraph(int mainWindowId);
        void signal_polarCoordinateGraphSidebarRenameSelectedGraph(int mainWindowId, QString name);

        // 三维曲面图
        void signal_sendThreeDSurfacePlotData(int graphType, int variableIndex, int frequencyIndex, int readerIndex, QString filePath, QString name, bool isOpenNewWindow);
        void signal_threeDSurfacePlotSidebarCurveNameClicked(int windowId, QList<int> selectedIndexes);
        void signal_threeDSurfacePlotSidebarFrequencyChanged(int windowId, int frequencyId);
        void signal_threeDSurfacePlotSidebarResultDataChanged(int windowId, int resultDataIndex);
        void signal_threeDSurfacePlotSidebarDataOprationChanged(int windowId, bool isLoged, bool isNormalized);
        void signal_threeDSurfacePlotSidebarCurveNameItemCheckStateChanged(int windowId, int itemIndex, bool checkState);
        void signal_saveThreeDSurfacePlotMainSettingData(int windowId, int settingDataId, bool scalarBarIsAutoRange, double scalarBarMin, double scalarBarMax,
                                                         bool scalarBarIsShowTitle, QString scalarBarTitle, QString scalarBarFontColor, int scalarBarFontSize,
                                                         int geometryTransparency, QString resultGraphName, int resultGraphModelTransparency, double resultGraphScale, bool cubeAxesIsVisible);
        void signal_saveThreeDSurfacePlotMoveResultDataSetting(int windowId, int infomationId, double translationX, double translationY, double translationZ,
                                                               double rotationTheta, double rotationPhi);
        void signal_delete3DSurfacePlots(int windowId, QString selectedIndexs);
        void signal_threeDSurfaceCurveNameItemRename(int windowId, int itemIndex, QString newName);
        void signal_threeDSurfaceCurveDataFileterRadioButtonClicked(int windowId, int index);

        // 三维云图
        void signal_sendThreeDCloudMapData(bool useNewWindow, int graphType, int variableIndex, int readerIndex, QString filePath, QString name, int resultDataIndex, bool isOpenNewWindow);
        void signal_threeDCloudMapSidebarCurveNameClicked(int windowId, QList<int> selectedIndexes);
        void signal_threeDCloudMapSidebarUpdateFixedParameter(int windowId, int index);
        void signal_threeDCloudMapSidebarUpdateOriginalDataSource(int windowId, int index, int showType, int fixedValueIndex, bool isLog, bool isNormalize);
        void signal_threeDCloudMapSidebarResultDataChanged(int windowId, int index);
        void signal_threeDCloudMapSidebarNameItemRename(int windowId, int itemIndex, QString newName);
        void signal_threeDCloudMapSidebarDelete3DCloudMap(int windowId, QString selectedIndexs);
        void signal_threeDCloudMapSidebarDataOprationChanged(int windowId, bool isLoged, bool isNormalized);
        void signal_threeDCloudMapSidebarItemCheckStateChanged(int windowId, int itemIndex, bool visible);
        void signal_saveThreeDCloudMapMainSettingData(int windowId, int type, int settingDataId, bool scalarBarIsAutoRange,
                                                      double scalarBarMin, double scalarBarMax, bool scalarBarIsShowTitle,
                                                      QString scalarBarTitle, QString scalarBarFontColor, int scalarBarFontSize,
                                                      int geometryTransparency, QString resultGraphName, int resultGraphModelTransparency, bool cubeAxesIsVisible);

        // 表面电场图
        void signal_sendSurfaceElectricFieldGraphData(int graphType, int currentIndex, int readerIndex, QString sReaderType, QString sFilePath, QString sName, bool isOpenNewWindow);
        void signal_surfaceElectricFieldMapSidebarCurveNameClicked(int windowId, QList<int> selectedIndexes);
        void signal_surfaceElectricFieldMapSidebarResultDataChanged(int windowId, int index);
        void signal_surfaceElectricFieldMapSidebarUpdateProcessData(int windowId, bool isLog, bool isNormalize);
        void signal_surfaceElectricFieldMapSidebarNameItemRename(int windowId, int itemIndex, QString newName);
        void signal_surfaceElectricFieldMapSidebarDeleteSurfaceElectricFieldMap(int windowId, QString selectedIndexs);
        void signal_surfaceElectricFieldMapSidebarItemCheckStateChanged(int windowId, int itemIndex, bool visible);
        void signal_saveSurfaceElectricFieldMapMainSettingData(int windowId, int type, int settingDataId, bool scalarBarIsAutoRange,
                                                               double scalarBarMin, double scalarBarMax, bool scalarBarIsShowTitle,
                                                               QString scalarBarTitle, QString scalarBarFontColor, int scalarBarFontSize,
                                                               int geometryTransparency, QString resultGraphName, int resultGraphModelTransparency, bool cubeAxesIsVisible);

        // 三维图标记
        void signal_savePostMarkerAddSettingData(int windowUniversalID, int infomationGraph3DBasicalId, int type,
                                                 int fieldIndex, QString fieldName, int pickedId, QString pickedValue);
        void signal_savePostMarkerRemoveChosenSettingData(int windowUniversalID, QString removeChosenId);
        void signal_savePostMarkerRemoveAllSettingData(int windowUniversalID);
        void signal_savePostMarkerExportTableData(int windowUniversalID, QString fileName);

        //模型显示
        void signal_saveModelDisplaySettingData(int windowUniversalID, bool toolButtonActiveClipperIsChecked, bool toolButtonModelDisplayIsChecked, bool hasAnyGeometrySuccess);
        void signal_saveActiveClipperSettingData(int windowUniversalID, bool toolButtonActiveClipperIsChecked, bool toolButtonModelDisplayIsChecked, bool hasAnyGeometrySuccess, QString direction, double clipperValue);

        void signal_openProject();
        void signal_sendTableWidgetData(int readerIndex);

        void signal_exportPstData(QString filePath);
        void signal_importProjectData(QList<QString> filePaths);
        void signal_lineChartCenterWidgetInfoListPaste(QString infoIds);

    private:
        PostCommandPy();
        /// @brief 初始化链接信号槽
        void initConnect();

        void putErrorMsg(QString content);

    private slots:
        void slot_smartScriptSave(QString fileName);
        void slot_smartScriptRun(QString fileName, bool isNoGui, QString listPara);
        void slot_smartScriptEdit(QString fileName, QString text);
        void slot_projectTreeSelectionChanged(QString projectTreeSelctedRowIDListStr);
        void slot_saveGraph(QString filePath);
        void slot_dataImport(QString filePath , bool isTextOrCsv, QString customData);

        void slot_createTwoDLineChart(int lineChartType, int variableIndex, QList<QPair<int, QList<int>>> chosenkeyList, QList<int> valueIndexs, QList<int> selectParserIndex, bool isOpenNewWindow);
        void slot_setHeatMapSelectedCurveNameIndexs(int windowId, QList<int> selectedCurveNameIndexs);
        void slot_setHeatMapVariableAxisChanged(int windowId, int variableAxisIndex);
        void slot_setHeatMapSecondVariableAxisChanged(int windowId, int variableAxisIndex);
        void slot_setHeatMapComplexPartsChanged(int windowId, bool isAmplitudeChecked, bool isPhaseChecked, bool isRealPartChecked, bool isImaginaryPartChecked);
        void slot_setHeatMapCurveNameCheckStateChanged(int windowId, int curveNameIndex, bool checkState);
        void slot_setHeatMapDataOprationChanged(int windowId, bool isLoged, bool isNormalized);
        void slot_setHeatMapResultValueDataChanged(int windowId, int valueIndex);
        void slot_saveHeatMapMainSettingData(int windowId, bool scalarBarIsAutoRange, double scalarBarMin, double scalarBarMax,
                                             QString scalarBarColor, int scalarBarFontSize, bool XAxisAutoTitle, QString XAxisTitle, QString XTitleFontColor, int XTitleFontSize,
                                             QString XAxisColor, double XAisThickness, int XValuePrecision, QString XAxisDigitColor, int XAxisDigitSize,
                                             bool XAxisIsAutoRange, double XAxisMax, double XAxisMin, bool XIsAutoStepSize, double XCustomStepSize,
                                             bool YAxisAutoTitle, QString YAxisTitle, QString YTitleFontColor, int YTitleFontSize,
                                             QString YAxisColor, double YAisThickness, int YValuePrecision, QString YAxisDigitColor, int YAxisDigitSize,
                                             bool YAxisIsAutoRange, double YAxisMax, double YAxisMin, bool YIsAutoStepSize, double YCustomStepSize,
                                             bool gridIsMainGridLineDisplay, QString gridMainGridLineColor, int gridMainGridLineStyle, double gridMainGridLineThickness,
                                             bool gridIsSecondaryGridLineDisplay, QString gridSecondaryGridLineColor, int gridSecondaryGridLineStyle, double gridSecondaryGridLineThickness,
                                             QString windowTitleName, QString windowTitleFontColor, int windowTitleFontSize);
        void slot_setHeatMapFixedValueChanged(int windowId, QList<int> indexList);
        void slot_setHeatMapRemoveSelectedGraph(int windowId);
        void slot_setHeatMapRenameFinished(int windowId, QString name);
        void slot_setHeatMapAddTracer(int windowId, QString name, double x, double y, double value, int tracerStyle, int size, int penR, int penG, int penB, int penA, int interpolating, int curveInfoID, int tracerIndex);
        void slot_setHeatMapRemoveSelectedTracer(int mainWindowId, QList<int> infoIdList);
        void slot_setHeatMapRemoveAllTracer(int mainWindowId, QList<int> infoIdList);
        void slot_setHeatMapExportMarkerData(int windowId, QString fileName);
        void slot_setHeatMapChangeTracerProperty(int mainWindowId, QString name, int symbolStyle, int size, int penR, int penG, int penB, int penA, int tracerID);

        // 二维折线图
        void slot_lineChartSidebarVariableAxisChanged(int mainWindowId, QList<int> allSelectedItem, int reuslt, QString sVariableAxistCurrentText);
        void slot_lineChartSidebarCurveNameClicked(int mainWindowId, QList<int> allSelectedItemIndexList);
        void slot_lineChartSidebarCurveNameCheckStateChanged(int mainWindowId, int index, int checkStatus);
        void slot_lineChartSidebarDataOperationChanged(int mainWindowId, bool isNormChecked, bool isDBChecked, bool isMathOperationChecked);
        void slot_lineChartSidebarFixedValueChanged(int mainWindowId, QList<int> allIndexLis);
        void slot_lineChartSidebarValueDataChanged(int mainWindowId, int currentIndex);
        void slot_saveLineChartMainSettingData(int mainWindowId, int index, bool axiDisIsAutoName, QString axiDisTitleText, QString axiDisTitleFontColor, int axiDisTitleFontSize, QString axiDisAxisColor, int axiDisAxisThickness, double axiDisValuePrecision, QString axiDisAxisDigitColor, int axiDisAxisDigitSize,
                                               bool axiRangIsAutoRange, double axiRangMaxValue, double axiRangMinValue, bool axiRangIsAutoStepSize, double axiRangCustomStepSize,
                                               bool yAxiDisIsAutoName, QString yAxiDisTitleText, QString yAxiDisTitleFontColor, int yAxiDisTitleFontSize, QString yAxiDisAxisColor, int yAxiDisAxisThickness, double yAxiDisValuePrecision, QString yAxiDisAxisDigitColor, int yAxiDisAxisDigitSize,
                                               bool yAxiRangIsAutoRange, double yAxiRangMaxValue, double yAxiRangMinValue, bool yAxiRangIsAutoStepSize, double yAxiRangCustomStepSize,
                                               bool gridIsMainGridLineDisplay, QString gridMainGridLineColor, int gridMainGridLineStyle, double gridMainGridLineThickness, bool gridIsSecondaryGridLineDisplay, QString gridSecondaryGridLineColor, int gridSecondaryGridLineStyle, double gridSecondaryGridLineThickness,
                                               QString titleName, QString titleFontColor, int titleFontSize,
                                               QString legendFontColor, int legendFontSize, QString legendLineColor, int legendLineThickness,
                                               QString resultDataName, QString dataLineColor, int dataLineStyle, double dataLineThickness, bool isDisplaySymbol, int symbolStyle, double symbolSize, QString symbolColor);

        // 极坐标图
        void slot_polarCoordinateGraphSidebarVariableAxisChanged(int mainWindowId, QList<int> allSelectedItem, int reuslt, QString sVariableAxistCurrentText);
        void slot_polarCoordinateGraphSidebarAllVariableAxisChanged(int mainWindowId, QString sVariableAxistCurrentText);
        void slot_polarCoordinateGraphSidebarCurveNameClicked(int mainWindowId, QList<int> allSelectedItemIndexList);
        void slot_polarCoordinateGraphSidebarCurveNameCheckStateChanged(int mainWindowId, int index, int checkStatus);
        void slot_polarCoordinateGraphSidebarDataOperationChanged(int mainWindowId, bool isNormChecked, bool isDBChecked);
        void slot_polarCoordinateGraphSidebarValueDataChanged(int mainWindowId, int currentIndex);
        void slot_savePolarCoordinateGraphMainSettingData(int mainWindowId, int index, QString angDisAxisColor, int angDisAxisThickness, double angDisValuePrecision, QString angDisAxisDigitColor, int angDisAxisDigitSize,
                                                          bool angRangIsAutoStepSize, double angRangCustomStepSize,
                                                          QString radDisAxisColorStr, int radDisAxisThickness, double radDisValuePrecision, QString radDisAxisDigitColorStr, int radDisAxisDigitSize,
                                                          bool radRangIsAutoRange, double radRangMaxValue, double radRangMinValue, bool radRangIsAutoStepSize, double radRangCustomStepSize,
                                                          bool gridIsMainGridLineDisplay, QString gridMainGridLineColor, int gridMainGridLineStyle, double gridMainGridLineThickness,
                                                          QString titleName, QString titleFontColor, int titleFontSize,
                                                          QString legendFontColor, int legendFontSize, QString legendLineColor, int legendLineThickness,
                                                          QString dataProResultDataName, QString dataProDataLineColor, int dataProDataLineStyle, double dataProDataLineThickness, bool dataProIsDisplaySymbol, int dataProSymbolStyle, double dataProSymbolSize, QString dataProSymbolColor);
        void slot_polarCoordinateGraphSidebarDeleteAllGraph(int mainWindowId);
        void slot_polarCoordinateGraphSidebarRenameSelectedGraph(int mainWindowId, QString name);
        void slot_polarCoordinateGraphSidebarComplexPartsChanged(int mainWindowId, bool isAmplitudeChecked, bool isPhaseChecked, bool isRealPartChecked, bool isImaginaryPartChecked);
        void slot_polarCoordinateGraphSidebarFixedValueChanged(int mainWindowId, QList<int> indexList);
        void slot_polarCoordinateGraphSidebarRemoveSelectedGraph(int windowId, QList<int> indexList);
        void slot_polarCoordinateGraphSidebarCopySelectedGraph(int windowId);

        void slot_polarCoordinateGraphAddTracer(int mainWindowId, QString name, double angle, int tracerStyle, int size, int penR, int penG, int penB, int penA,
                                            int brushR, int brushG, int brushB, int brushA, int interpolating, int curveInfoID, int tracerIndex);
        void slot_polarCoordinateGraphRemoveSelectedTracer(int windowId, QList<int> infoIdList, int curveInfoID);
        void slot_polarCoordinateGraphRemoveAllTracer(int windowId, QList<int> infoIdList);
        void slot_polarCoordinateGraphExportMarkerData(int windowId, QString fileName);
        void slot_polarCoordinateGraphChangeTracerProperty(int mainWindowId, QString name, double x, int symbolStyle, int size, int penR, int penG, int penB, int penA, int tracerID);

        // 三维曲面图
        void slot_createThreeDSurfacePlot(int graphType, int variableIndex, int frequencyIndex, int readerIndex, QString filePath, QString name, QString geometryFileName,bool isOpenNewWindow);
        void slot_threeDSurfacePlotSidebarCurveNameClicked(int windowId, QList<int> selectedIndexes);
        void slot_threeDSurfacePlotSidebarFrequencyChanged(int windowId, int frequencyId);
        void slot_threeDSurfacePlotSidebarResultDataChanged(int windowId, int resultDataIndex);
        void slot_threeDSurfacePlotSidebarDataOprationChanged(int windowId, bool isLoged, bool isNormalized);
        void slot_threeDSurfacePlotSidebarCurveNameItemCheckStateChanged(int windowId, int itemIndex, bool checkState);
        void slot_saveThreeDSurfacePlotMainSettingData(int windowId, int settingDataId, bool scalarBarIsAutoRange, double scalarBarMin, double scalarBarMax,
                                                       bool scalarBarIsShowTitle, QString scalarBarTitle, QString scalarBarFontColor, int scalarBarFontSize, int geometryTransparency, QString resultGraphName,
                                                       int resultGraphModelTransparency, double resultGraphScale, bool cubeAxesIsVisible);
        void slot_saveThreeDSurfacePlotMoveResultDataSetting(int windowId, int infomationId, double translationX, double translationY, double translationZ,
                                                               double rotationTheta, double rotationPhi);
        void slot_delete3DSurfacePlots(int windowId, QString selectedIndexs);
        void slot_threeDSurfaceCurveNameItemRename(int windowId, int itemIndex, QString newName);
        void slot_threeDSurfaceCurveDataFileterRadioButtonClicked(int windowId, int index);

        // 三维云图
        void slot_createThreeDCloudMap(bool useNewWindow, int graphType, int variableIndex, int readerIndex, QString filePath, QString name, QString geometryFileName, int resultDataIndex);
        void slot_threeDCloudMapSidebarCurveNameClicked(int windowId, QList<int> selectedIndexes);
        void slot_threeDCloudMapSidebarUpdateFixedParameter(int windowId, int index);
        void slot_threeDCloudMapSidebarUpdateOriginalDataSource(int windowId, int index, int showType, int fixedValueIndex, bool isLog, bool isNormalize);
        void slot_threeDCloudMapSidebarResultDataChanged(int windowId, int index);
        void slot_threeDCloudMapSidebarNameItemRename(int windowId, int itemIndex, QString newName);
        void slot_threeDCloudMapSidebarDelete3DCloudMap(int windowId, QString selectedIndexs);
        void slot_threeDCloudMapSidebarDataOprationChanged(int windowId, bool isLoged, bool isNormalized);
        void slot_threeDCloudMapSidebarItemCheckStateChanged(int windowId, int itemIndex, bool visible);
        void slot_saveThreeDCloudMapMainSettingData(int windowId, int type, int settingDataId, bool scalarBarIsAutoRange,
                                                    double scalarBarMin, double scalarBarMax, bool scalarBarIsShowTitle,
                                                    QString scalarBarTitle, QString scalarBarFontColor, int scalarBarFontSize,
                                                    int geometryTransparency, QString resultGraphName, int resultGraphModelTransparency, bool cubeAxesIsVisible);

        // 表面电场图
        void slot_createSurfaceElectricFieldGraph(int graphType, int currentIndex, int readerIndex, QString sReaderType, QString sFilePath, QString sName, QString geometryFileName, bool isOpenNewWindow);
        void slot_surfaceElectricFieldMapSidebarCurveNameClicked(int windowId, QList<int> selectedIndexes);
        void slot_surfaceElectricFieldMapSidebarResultDataChanged(int windowId, int index);
        void slot_surfaceElectricFieldMapSidebarUpdateProcessData(int windowId, bool isLog, bool isNormalize);
        void slot_surfaceElectricFieldMapSidebarNameItemRename(int windowId, int itemIndex, QString newName);
        void slot_surfaceElectricFieldMapSidebarDeleteSurfaceElectricFieldMap(int windowId, QString selectedIndexs);
        void slot_surfaceElectricFieldMapSidebarItemCheckStateChanged(int windowId, int itemIndex, bool visible);
        void slot_saveSurfaceElectricFieldMapMainSettingData(int windowId, int type, int settingDataId, bool scalarBarIsAutoRange,
                                                             double scalarBarMin, double scalarBarMax, bool scalarBarIsShowTitle,
                                                             QString scalarBarTitle, QString scalarBarFontColor, int scalarBarFontSize,
                                                             int geometryTransparency, QString resultGraphName, int resultGraphModelTransparency, bool cubeAxesIsVisible);

        // 三维图标记
        void slot_savePostMarkerAddSettingData(int windowUniversalID, int infomationGraph3DBasicalId, int type,
                                                 int fieldIndex, QString fieldName, int pickedId, QString pickedValue);
        void slot_savePostMarkerRemoveChosenSettingData(int windowUniversalID, QString removeChosenId);
        void slot_savePostMarkerRemoveAllSettingData(int windowUniversalID);
        void slot_savePostMarkerExportTableData(int windowUniversalID, QString fileName);
        
        // 模型显示
        void slot_saveModelDisplaySettingData(int windowUniversalID, bool toolButtonActiveClipperIsChecked, bool toolButtonModelDisplayIsChecked, bool hasAnyGeometrySuccess);
        void slot_saveActiveClipperSettingData(int windowUniversalID, bool toolButtonActiveClipperIsChecked, bool toolButtonModelDisplayIsChecked, bool hasAnyGeometrySuccess, QString direction, double clipperValue);

        // 表格数据
        void slot_createTableWidget(int readerIndex);
        void slot_hideOrShowTableColumn(int windowId, QString selectedIndex);
        void slot_changeTbColumnName(int windowId, int index, QString newName);
        void slot_flushTbBySelectedRow(int windowId, QString parms);
        void slot_exportTbData(int windowId, QString filePath, QString delimiter, int onlyVisible);
        void slot_highlightSelectedTbColumns(int windowId, QString parms);
        // 工程数据
        void slot_doPrjFileWrite(QString fileName);
        void slot_doPrjFileRead(QString fileName);

        void slot_doPrjCloseTree(int index);
        void slot_doPrjTreeCopyDir(int index);
        void slot_doPrjTreePasteDir(int srcId, int destId);
        void slot_doPrjTreeCopyData(int index);
        void slot_doPrjTreePasteData(int srcId, int destId);
        void slot_doPrjTreeExpandDir(int index);
        void slot_doPrjTreeCollapseDir(int index);
        void slot_closeCenterTableBar(int index);
        void slot_changeCurrentTabBar(int index);

        void slot_submitEvaluation(int windowId, int emulationType, QString parms);

        void slot_openProject();
        void slot_importProjectData(QString data);

        void slot_lineChartWindowSetIsEdit(bool state);
        void slot_lineChartChangeLineProperty(int windowUniversalID, int curveInfoID, QString docStr);
        void slot_centerWidgetTabWidgetCurrentChanged(int currentIndex);
        void slot_lineChartCurve2DPlotorGuideLineSelectRemove();
        void slot_lineChartCurve2DPlotorGuideLineAllRemove();
        void slot_lineChartCurve2DPlotorMarkerSelectRemove();
        void slot_lineChartCurve2DPlotorMarkerAllRemove();
        void slot_lineChartLineChartTracerSelectChange(int id, bool selected);
        void slot_lineChartLineChartStraightLineSelectChange(int id, bool selected);
        void slot_lineChartWindowChangeGuideLineProperty(int guideLineID, double value, int guideLineStyle, double guideLineThickness, QString guideLineColor);
        void slot_lineChartWindowChangeTracerProperty(int tracerID, QString tracerName, double x, int symbolStyle, double symbolSize, QString symbolColor);
        void slot_lineChartAxisLineUpdate(QString typeAxis, int id, double value);
        void slot_lineChartComputeHIRF(const QString& graphNames, double incidentWaveFieldValue, const QString& HIRFName, const QString& typeName, bool isCheckBoxChecked);
        void slot_lineChartSidebarSettingsRemoveSelectedGraph();
        void slot_lineChartSidebarSettingsDeleteAllCurve();
        void slot_lineChartCreateLineChartStraightLine(int typeAxis);
        void slot_lineChartMeasureButtonClicked(int meaureTypeInt, double value);
        void slot_lineChartSidebarSettingsRenameCheck(QString text);
        void slot_lineChartCenterWidgetMoveLegend(int dataInt);
        void slot_lineChartWindowAddTracer(int windowUniversalID, QString parameters);
        void slot_lineChartCenterWidgetDialogAddLocalRange(double rangeLower, double rangeUpper, QString selectNames, bool execFlag, bool edit);
        void slot_lineChartCurve2DPlotorRemoveSelectedGraph();
        void slot_lineChartCurve2DPlotorRemoveAllGraphs();
        void slot_lineChartDialogCurveSmoothing(double range);
        void slot_lineChartSidebarSettingsAllVariableAxisSet(QString variableAxisName);
        void slot_lineChartSidebarSettingsComplex(QString data);
        void slot_lineChartSidebarSettingsFormulaEditor(QString data);
        void slot_lineChartSidebarSettingsCopySelectedGraph();
        void slot_lineChartComputeEffectiveness(QString graphNames, double e0);
        void slot_lineChartCenterWidgetInfoListPaste(QString infoIds);
        void slot_lineChartDialogTransferFunction(QString graphName, QString calibrationGraphName, QString type);
        void slot_lineChartDialogIPLCalculation(QString IPLString);
        void slot_lineChartDialogWaveformAnalysis(QString graphName, double cutOffFrequency, QString filterType, int filterOrder, double leftBoundary, double rightBoundary, int windowId, QString resultList);

        void slot_lineChartDialogInterpolation(int number, int type);

        void slot_exportPstData(QString filePath);
        void slot_sentWaveButterANdFFTVResult(int windowId, QString resultList);

    private:
        static PostCommandPy* m_instance;
    };

} // namespace PostCommand

#endif
